Transformer相关 |
您所在的位置:网站首页 › batchnorm instancenorm › Transformer相关 |
Transformer相关——(6)Normalization方式
引言
经过了残差模块后,Transformer还对残差模块输出进行了Normalization,本文对Normalization方式进行了总结,并回答为什么Transformer中选择使用Layer Normalization而不是Batch Normalization的问题。 为什么要做Normalization?Normalization通过将一部分不重要的信息损失掉,以此来降低拟合难度以及过拟合的风险,从而加速模型收敛。其目的是让分布稳定下来(降低各个维度数据的方差)。 不同的特征具有不同数量级的数据,它们对线性组合后的结果的影响所占比重就很不相同,数量级大的特征显然影响更大。做Normalization可以协调在特征空间上的分布,更好地进行梯度下降; 在神经网络中,特征经过线性组合后,还要经过激活函数,如果某个特征数量级过大,在经过激活函数时,就会提前进入它的饱和区间(比如sigmoid激活函数),即不管如何增大这个数值,它的激活函数值都在 1 附近,不会有太大变化,这样激活函数就对这个特征不敏感。 在神经网络用 SGD 等算法进行优化时,不同量纲的数据会使网络失衡,很不稳定。 Normalization方式主要包括以下几种方法:BatchNorm(2015年)、LayerNorm(2016年)、InstanceNorm(2016年)、GroupNorm(2018年)。 BatchNorm:batch方向做归一化,算NHW的均值,对小batchsize效果不好;BN主要缺点是对batchsize的大小比较敏感,由于每次计算均值和方差是在一个batch上,所以如果batchsize太小,则计算的均值、方差不足以代表整个数据分布; LayerNorm:channel方向做归一化,算CHW的均值,主要对RNN作用明显; InstanceNorm:一个channel内做归一化,算H*W的均值,用在风格化迁移;因为在图像风格化中,生成结果主要依赖于某个图像实例,所以对整个batch归一化不适合图像风格化中,因而对HW做归一化。可以加速模型收敛,并且保持每个图像实例之间的独立。 GroupNorm:将channel方向分group,然后每个group内做归一化,算(C//G)HW的均值;这样与batchsize无关,不受其约束。在batchsize |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |